home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / telecomm / uemlsrc.arc / extmac.c < prev    next >
C/C++ Source or Header  |  1987-08-24  |  13KB  |  377 lines

  1. /* EXTMAC.C support program for uemail.ttp.  Reads macro files created
  2.  * in uemail format and creates C source prototypes.
  3.  */
  4.  
  5. #include <stdio.h>
  6.  
  7. #define NFILEN  80                      /* # of bytes, file name        */
  8. #define NBUFN   16                      /* # of bytes, buffer name      */
  9. #define NLINE   256                     /* # of bytes, line             */
  10. #define NKBDM   256                     /* # of strokes, keyboard macro */
  11. #define NPAT    80                      /* # of bytes, pattern          */
  12. #define HUGE    1000                    /* Huge number                  */
  13. #define CTRL    0x0100                  /* Control flag, or'ed in       */
  14. #define META    0x0200                  /* Meta flag, or'ed in          */
  15. #define CTLX    0x0400                  /* ^X flag, or'ed in            */
  16. #define SPEC    0x0800                  /* Special scancode keys        */
  17. #define FLEN    15
  18.  
  19. short *kbdmop;
  20. short kbdm[NKBDM];
  21. FILE  *bmacrp, *fopen();
  22.  
  23. unsigned long _STKSIZ = 32 * 1024;
  24. typedef struct KEYTAB {
  25.         short   k_code;
  26.         char    k_mfunc[FLEN];
  27. } KEYTAB;
  28. /*
  29.  * Command table.
  30.  * This table  is *roughly* in ASCII
  31.  * order, left to right across the characters
  32.  * of the command. This expains the funny
  33.  * location of the control-X commands.
  34.  */
  35. KEYTAB  keytab[] = {
  36.         CTRL|'@',       "setmark",
  37.         CTRL|'A',       "gotobol",
  38.         CTRL|'B',       "backchar",
  39.         CTRL|'C',       "shell",
  40.         CTRL|'D',       "forwdel",
  41.         CTRL|'E',       "gotoeol",
  42.         CTRL|'F',       "forwchar",
  43.         CTRL|'G',       "ctrlg",
  44.         CTRL|'H',       "backchar",
  45.         CTRL|'I',       "tab",
  46.         CTRL|'J',       "indent",
  47.         CTRL|'K',       "mdeleln",
  48.         CTRL|'L',       "refresh",
  49.         CTRL|'M',       "newline",
  50.         CTRL|'N',       "forwline",
  51.         CTRL|'O',       "openline",
  52.         CTRL|'P',       "backline",
  53.         CTRL|'Q',       "quote",
  54.         CTRL|'R',       "backsearch",
  55.         CTRL|'S',       "forwsearch",
  56.         CTRL|'T',       "twiddle",
  57.         CTRL|'V',       "forwpage",
  58.         CTRL|'W',       "killregion",
  59.         CTRL|'Y',       "yank",
  60.         CTRL|'Z',       "quickexit",
  61.         CTRL|'\\',      "unkncom",
  62.         CTRL|'_',       "kermit",
  63.         CTRL|'^',       "unkncom",
  64.         CTLX|CTRL|'A',  "unkncom",
  65.         CTLX|CTRL|'B',  "listbuffers",
  66.         CTLX|CTRL|'C',  "quit",
  67.         CTLX|CTRL|'D',  "unkncom",
  68.         CTLX|CTRL|'E',  "commfil",
  69.         CTLX|CTRL|'F',  "filename",
  70.         CTLX|CTRL|'G',  "ctrlg",
  71.         CTLX|CTRL|'H',  "unkncom",
  72.         CTLX|CTRL|'I',  "print",
  73.         CTLX|CTRL|'J',  "unkncom",
  74.         CTLX|CTRL|'K',  "unkncom",
  75.         CTLX|CTRL|'L',  "lowerregion",
  76.         CTLX|CTRL|'M',  "unkncom",
  77.         CTLX|CTRL|'N',  "mvdnwind",
  78.         CTLX|CTRL|'O',  "deblank",
  79.         CTLX|CTRL|'P',  "mvupwind",
  80.         CTLX|CTRL|'Q',  "unkncom",
  81.         CTLX|CTRL|'R',  "fileread",
  82.         CTLX|CTRL|'S',  "filesave",
  83.         CTLX|CTRL|'T',  "showtime",
  84.         CTLX|CTRL|'U',  "upperregion",
  85.         CTLX|CTRL|'V',  "filevisit",
  86.         CTLX|CTRL|'W',  "filewrite",
  87.         CTLX|CTRL|'X',  "swapmark",
  88.         CTLX|CTRL|'Y',  "unkncom",
  89.         CTLX|CTRL|'Z',  "shrinkwind",
  90.         CTLX|'!',       "paginate",
  91.         CTLX|'#',       "setpage",
  92.         CTLX|'+',       "pageforw",
  93.         CTLX|'-',       "pageback",
  94.         CTLX|'.',       "setindcol",
  95.         CTLX|'(',       "ctlxlp",
  96.         CTLX|')',       "ctlxrp",
  97.         CTLX|'*',       "retversion",
  98.         CTLX|'<',       "btopunct",
  99.         CTLX|'=',       "showcpos",
  100.         CTLX|'>',       "ftopunct",
  101.         CTLX|'0',       "unkncom",
  102.         CTLX|'1',       "onlywind",
  103.         CTLX|'2',       "splitwind",
  104.         CTLX|'3',       "unkncom",
  105.         CTLX|'4',       "unkncom",
  106.         CTLX|'5',       "unkncom",
  107.         CTLX|'6',       "unkncom",
  108.         CTLX|'7',       "unkncom",
  109.         CTLX|'8',       "unkncom",
  110.         CTLX|'9',       "unkncom",
  111.         CTLX|'A',       "unkncom",
  112.         CTLX|'B',       "usebuffer",
  113.         CTLX|'C',       "paintbuffer",
  114.         CTLX|'D',       "setpath",
  115.         CTLX|'E',       "ctlxe",
  116.         CTLX|'F',       "setfillcol",
  117.         CTLX|'H',       "unkncom",
  118.         CTLX|'I',       "fileinsert",
  119.         CTLX|'J',       "unkncom",
  120.         CTLX|'K',       "killbuffer",
  121.         CTLX|'L',       "unkncom",
  122.         CTLX|'M',       "setmode",
  123.         CTLX|'N',       "nextwind",
  124.         CTLX|'O',       "prevwind",
  125.         CTLX|'P',       "prevwind",
  126.         CTLX|'Q',       "unkncom",
  127.         CTLX|'R',       "writereg",
  128.         CTLX|'S',       "gospell",
  129.         CTLX|'T',       "unkncom",
  130.         CTLX|'U',       "unkncom",
  131.         CTLX|'V',       "unkncom",
  132.         CTLX|'W',       "wc",
  133.         CTLX|'Y',       "unkncom",
  134.         CTLX|'Z',       "enlargewind",
  135.         CTLX|'\\',      "grtw",
  136.         CTLX|'`',       "getmacro",
  137.         CTLX|'~',       "shell",
  138.         CTLX|SPEC|'p',  "swapmark",
  139.         META|CTRL|'B',  "backword",
  140.         META|CTRL|'C',  "mcenter",
  141.         META|CTRL|'F',  "forwword",
  142.         META|CTRL|'G',  "ctrlg",
  143.         META|CTRL|'H',  "backword",
  144.         META|CTRL|'I',  "kill",
  145.         META|CTRL|'K',  "mdelwln",
  146.         META|CTRL|'M',  "unkncom",
  147.         META|CTRL|'N',  "enumerate",
  148.         META|CTRL|'O',  "clowsp",
  149.         META|CTRL|'P',  "tglcase",
  150.         META|CTRL|'R',  "mrflush",
  151.         META|CTRL|'S',  "forwisearch",
  152.         META|CTRL|'T',  "backisearch",
  153.         META|'!',       "reposition",
  154.         META|'.',       "gotoeob",
  155.         META|',',       "gotobob",
  156.         META|'>',       "gotoeob",
  157.         META|'<',       "gotobob",
  158.         META|' ',       "setmark",
  159.         META|'@',       "rettpa",
  160.         META|'A',       "backsent",
  161.         META|'B',       "backword",
  162.         META|'C',       "capword",
  163.         META|'D',       "delfword",
  164.         META|'E',       "forwsent",
  165.         META|'F',       "forwword",
  166.         META|'G',       "goline",
  167.         META|'H',       "markpar",
  168.         META|'I',       "unkncom",
  169.         META|'J',       "mindnl",
  170.         META|'K',       "killsent",
  171.         META|'L',       "lowerword",
  172.         META|'M',       "sglmode",
  173.         META|'N',       "goteop",
  174.         META|'O',       "mdropln",
  175.         META|'P',       "gotbop",
  176.         META|'Q',       "fillpar",
  177.         META|'R',       "replace",
  178.         META|'S',       "unkncom",
  179.         META|'T',       "twaddle",
  180.         META|'U',       "upperword",
  181.         META|'V',       "backpage",
  182.         META|'W',       "copyregion",
  183.         META|'X',       "mdoncom",
  184.         META|'Y',       "unkncom",
  185.         META|'Z',       "unkncom",
  186.         META|'\\',      "mdelind",
  187.         META|'~',       "clearflag",
  188.         META|0x7F,      "delbword",
  189.         SPEC|'H',       "backline",
  190.         SPEC|'P',       "forwline",
  191.         SPEC|'K',       "backchar",
  192.         SPEC|'M',       "forwchar",
  193.         SPEC|'b',       "kermit",
  194.         SPEC|'a',       "yank",
  195.         SPEC|'R',       "openline",
  196.         SPEC|'S',       "backdel",
  197.         SPEC|'G',       "refresh",
  198.         SPEC|'q',       "forwdel",
  199.         SPEC|'r',       "indent",
  200.         SPEC|'c',       "backword",
  201.         SPEC|'d',       "forwword",
  202.         SPEC|'e',       "grtw",
  203.         SPEC|'f',       "retversion",
  204.         SPEC|'g',       "gotobol",
  205.         SPEC|'h',       "gotoeol",
  206.         SPEC|'i',       "unkncom",
  207.         SPEC|'J',       "pageback",
  208.         SPEC|'N',       "pageforw",
  209.         SPEC|'j',       "backsent",
  210.         SPEC|'k',       "forwsent",
  211.         SPEC|'l',       "unkncom",
  212.         SPEC|'m',       "gotbop",
  213.         SPEC|'n',       "goteop",
  214.         SPEC|'o',       "unkncom",
  215.         SPEC|'D',       "quickexit",
  216.         SPEC|'C',       "filesave",
  217.         SPEC|'B',       "filewrite",
  218.         SPEC|'A',       "filevisit",
  219.         SPEC|'@',       "fileread",
  220.         SPEC|'?',       "fileinsert",
  221.         SPEC|'>',       "writereg",
  222.         SPEC|'=',       "filename",
  223.         SPEC|'<',       "listbuffers",
  224.         SPEC|';',       "setmark",
  225.         0x60,           "putmacro",
  226.         0x7F,           "backdel"
  227. };
  228.  
  229. #define NKEYTAB (sizeof(keytab)/sizeof(keytab[0]))
  230.  
  231. main(argc,argv)
  232. int argc;
  233. char *argv[];
  234. {
  235.